package org.yenn.pattern.aliyun.creational.factory;


import org.junit.Test;
import org.yenn.pattern.aliyun.service.Shape;

/**
 * 步骤 4
 * 使用该工厂，通过传递类型信息来获取实体类的对象。
 */
public class ShapeFactoryDemo {

    /**
     * 步骤 5
     * 验证输出。
     * Inside Circle::draw() method.
     * Inside Rectangle::draw() method.
     * Inside Square::draw() method.
     */
    @Test
    public void getShape() {
        ShapeFactory shapeFactory = new ShapeFactory();

        //获取 Circle 的对象，并调用它的 draw 方法
        Shape shape1 = shapeFactory.getShape("CIRCLE");

        //调用 Circle 的 draw 方法
        shape1.draw();

        //获取 Rectangle 的对象，并调用它的 draw 方法
        Shape shape2 = shapeFactory.getShape("RECTANGLE");

        //调用 Rectangle 的 draw 方法
        shape2.draw();

        //获取 Square 的对象，并调用它的 draw 方法
        Shape shape3 = shapeFactory.getShape("SQUARE");

        //调用 Square 的 draw 方法
        shape3.draw();
    }
}